//
//  NSBitmapImageRep+Extensions.swift
//  SwiftDraw
//
//  Created by Simon Whitty on 18/12/18.
//  Copyright 2020 Simon Whitty
//
//  Distributed under the permissive zlib license
//  Get the latest version from here:
//
//  https://github.com/swhitty/SwiftDraw
//
//  This software is provided 'as-is', without any express or implied
//  warranty.  In no event will the authors be held liable for any damages
//  arising from the use of this software.
//
//  Permission is granted to anyone to use this software for any purpose,
//  including commercial applications, and to alter it and redistribute it
//  freely, subject to the following restrictions:
//
//  1. The origin of this software must not be misrepresented; you must not
//  claim that you wrote the original software. If you use this software
//  in a product, an acknowledgment in the product documentation would be
//  appreciated but is not required.
//
//  2. Altered source versions must be plainly marked as such, and must not be
//  misrepresented as being the original software.
//
//  3. This notice may not be removed or altered from any source distribution.
//

import AppKit

extension NSBitmapImageRep {

  convenience init(pixelsWide width: Int, pixelsHigh height: Int) {
    self.init(bitmapDataPlanes: nil,
              pixelsWide: width,
              pixelsHigh: height,
              bitsPerSample: 8,
              samplesPerPixel: 4,
              hasAlpha: true,
              isPlanar: false,
              colorSpaceName: NSColorSpaceName.deviceRGB,
              bytesPerRow: 0,
              bitsPerPixel: 32)!
  }

  func lockFocus() {
    NSGraphicsContext.saveGraphicsState()
    NSGraphicsContext.current = NSGraphicsContext(bitmapImageRep: self)
  }

  func unlockFocus() {
    NSGraphicsContext.restoreGraphicsState()
  }
}
